home *** CD-ROM | disk | FTP | other *** search
/ Java Developer's Companion / Java Developer's Companion.iso / Javacup / PR8ADPL7.TAR / productivity_tools / PR8ADPL7 / FingerComponent.java < prev    next >
Encoding:
Java Source  |  1996-05-23  |  2.1 KB  |  84 lines

  1. // FingerComponent
  2. // A very simple JFS client for fingering a user at an arbitrary host.
  3. // Makes use of /dev/TCP to get around applet socket restrictions
  4. import java.awt.*;
  5. import java.net.*;
  6. import java.io.*;
  7.  
  8. public class FingerComponent extends JFScomponent
  9. {
  10.     TextField host, user;
  11.     TextArea result;
  12.  
  13.     FingerComponent()
  14.     {
  15.     // create UI
  16.     setLayout(new BorderLayout());
  17.     Panel top = new Panel();
  18.     top.setLayout(new BorderLayout());
  19.     Panel left = new Panel();
  20.     left.setLayout(new GridLayout(2,1));
  21.     left.add(new Label("Host"));
  22.     left.add(new Label("Username"));
  23.     top.add("West", left);
  24.     Panel right = new Panel();
  25.     right.setLayout(new GridLayout(2,1));
  26.     right.add(host = new TextField());
  27.     right.add(user = new TextField());
  28.     top.add("Center", right);
  29.     add("North", top);
  30.     add("Center", result = new TextArea());
  31.     result.setEditable(false);
  32.     result.setFont(new Font("courier", Font.PLAIN, 10));
  33.     }
  34.  
  35.     public boolean action(Event evt, Object obj)
  36.     {
  37.     if (evt.target == host || evt.target == user) {
  38.         // Read from /dev/TCP
  39.         Message head = new Message();
  40.         String hoststr = host.getText().trim(),
  41.                userstr = user.getText().trim();
  42.         if (hoststr.length() == 0)
  43.             return false;    // no host given
  44.         head.add("Host", hoststr);
  45.         head.add("Port", "79");
  46.         int fport;
  47.         try fport = Integer.parseInt(client.devget("/dev/TCP", head).
  48.                          find("Port"));
  49.         catch(RequestException e) {
  50.             new ErrorWindow("Error fingering "+userstr+"@"+
  51.                     hoststr+" : "+e.getMessage());
  52.             return false;
  53.             }
  54.  
  55.         // Connect to finger
  56.         Socket s = null;
  57.         LineInputStream sin = null;
  58.         LineOutputStream sout = null;
  59.         try {
  60.             s = new Socket(client.serverhost, fport);
  61.             sin = new LineInputStream(s.getInputStream());
  62.             sout = new LineOutputStream(s.getOutputStream());
  63.             }
  64.         catch(Exception e) {
  65.             new ErrorWindow("Error connecting to server : "+
  66.                     e.getMessage());
  67.             return false;
  68.             }
  69.         sout.puts(userstr);
  70.         String res = "";
  71.         try while(true) res += sin.gets()+"\n";
  72.         catch(IOException e);
  73.         result.setText(res);
  74.         }
  75.     return true;
  76.     }
  77.  
  78.     Dimension wantedsize()
  79.     {
  80.     return new Dimension(500, 250);
  81.     }
  82. }
  83.  
  84.